// configureStore 简化了之前创建store的配置选项，可以内置多个reducer，并且配置redux-middleware，并且可在其中启用Redux Devtools扩展。
import { configureStore } from '@reduxjs/toolkit';

// redux数据持久化
import { persistStore, persistReducer } from 'redux-persist';
import storage from 'redux-persist/lib/storage';

// 切片
import reducer from './reducer';

export const store = configureStore({
	devTools: process.env.NODE_ENV !== 'production',
	reducer: persistReducer(
		{
			key: 'root', // 必须有的
			storage, // 缓存机制
			whitelist: ['base'] // reducer 里持久化的数据,除此外均为不持久化数据
		},
		reducer
	),
	middleware: (getDefaultMiddleware) =>
		getDefaultMiddleware({
			serializableCheck: false // 忽略非序列化的 action，以便与 redux-persist 兼容
		})
});

export const persistor = persistStore(store);

export * from './reducer/base';
export * from './reducer/user';
